// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// go:build（达尔文| | linux | | windows | | freebsd）和&（amd64 | | | arm64）

package fuzz

import (
	"internal/unsafeheader"
	"unsafe"
)

// coverage返回一个[]字节，包含
// 插入指令的源代码的每个边缘的唯一8位计数器。只有在构建时设置了
// /`-d=libfuzzer`时，才会生成此覆盖率数据。这可以用来理解代码
// 测试执行的覆盖范围。
func coverage() []byte {
	addr := unsafe.Pointer(&_counters)
	size := uintptr(unsafe.Pointer(&_ecounters)) - uintptr(addr)

	var res []byte
	*(*unsafeheader.Slice)(unsafe.Pointer(&res)) = unsafeheader.Slice{
		Data: addr,
		Len:  int(size),
		Cap:  int(size),
	}
	return res
}
